home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / xml / sax / saxutils.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  11KB  |  308 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. import os
  5. import urlparse
  6. import urllib
  7. import types
  8. import handler
  9. import xmlreader
  10.  
  11. try:
  12.     _StringTypes = [
  13.         types.StringType,
  14.         types.UnicodeType]
  15. except AttributeError:
  16.     _StringTypes = [
  17.         types.StringType]
  18.  
  19.  
  20. try:
  21.     from codecs import xmlcharrefreplace_errors
  22.     _error_handling = 'xmlcharrefreplace'
  23.     del xmlcharrefreplace_errors
  24. except ImportError:
  25.     _error_handling = 'strict'
  26.  
  27.  
  28. def __dict_replace(s, d):
  29.     for key, value in d.items():
  30.         s = s.replace(key, value)
  31.     
  32.     return s
  33.  
  34.  
  35. def escape(data, entities = { }):
  36.     data = data.replace('&', '&')
  37.     data = data.replace('>', '>')
  38.     data = data.replace('<', '<')
  39.     if entities:
  40.         data = __dict_replace(data, entities)
  41.     
  42.     return data
  43.  
  44.  
  45. def unescape(data, entities = { }):
  46.     data = data.replace('<', '<')
  47.     data = data.replace('>', '>')
  48.     if entities:
  49.         data = __dict_replace(data, entities)
  50.     
  51.     return data.replace('&', '&')
  52.  
  53.  
  54. def quoteattr(data, entities = { }):
  55.     entities = entities.copy()
  56.     entities.update({
  57.         '\n': ' ',
  58.         '\r': ' ',
  59.         '\t': ' ' })
  60.     data = escape(data, entities)
  61.     if '"' in data:
  62.         if "'" in data:
  63.             data = '"%s"' % data.replace('"', '"')
  64.         else:
  65.             data = "'%s'" % data
  66.     else:
  67.         data = '"%s"' % data
  68.     return data
  69.  
  70.  
  71. class XMLGenerator(handler.ContentHandler):
  72.     
  73.     def __init__(self, out = None, encoding = 'iso-8859-1'):
  74.         if out is None:
  75.             import sys as sys
  76.             out = sys.stdout
  77.         
  78.         handler.ContentHandler.__init__(self)
  79.         self._out = out
  80.         self._ns_contexts = [
  81.             { }]
  82.         self._current_context = self._ns_contexts[-1]
  83.         self._undeclared_ns_maps = []
  84.         self._encoding = encoding
  85.  
  86.     
  87.     def _write(self, text):
  88.         if isinstance(text, str):
  89.             self._out.write(text)
  90.         else:
  91.             self._out.write(text.encode(self._encoding, _error_handling))
  92.  
  93.     
  94.     def _qname(self, name):
  95.         if name[0]:
  96.             prefix = self._current_context[name[0]]
  97.             if prefix:
  98.                 return prefix + ':' + name[1]
  99.             
  100.         
  101.         return name[1]
  102.  
  103.     
  104.     def startDocument(self):
  105.         self._write('<?xml version="1.0" encoding="%s"?>\n' % self._encoding)
  106.  
  107.     
  108.     def startPrefixMapping(self, prefix, uri):
  109.         self._ns_contexts.append(self._current_context.copy())
  110.         self._current_context[uri] = prefix
  111.         self._undeclared_ns_maps.append((prefix, uri))
  112.  
  113.     
  114.     def endPrefixMapping(self, prefix):
  115.         self._current_context = self._ns_contexts[-1]
  116.         del self._ns_contexts[-1]
  117.  
  118.     
  119.     def startElement(self, name, attrs):
  120.         self._write('<' + name)
  121.         for name, value in attrs.items():
  122.             self._write(' %s=%s' % (name, quoteattr(value)))
  123.         
  124.         self._write('>')
  125.  
  126.     
  127.     def endElement(self, name):
  128.         self._write('</%s>' % name)
  129.  
  130.     
  131.     def startElementNS(self, name, qname, attrs):
  132.         self._write('<' + self._qname(name))
  133.         for prefix, uri in self._undeclared_ns_maps:
  134.             if prefix:
  135.                 self._out.write(' xmlns:%s="%s"' % (prefix, uri))
  136.                 continue
  137.             self._out.write(' xmlns="%s"' % uri)
  138.         
  139.         self._undeclared_ns_maps = []
  140.         for name, value in attrs.items():
  141.             self._write(' %s=%s' % (self._qname(name), quoteattr(value)))
  142.         
  143.         self._write('>')
  144.  
  145.     
  146.     def endElementNS(self, name, qname):
  147.         self._write('</%s>' % self._qname(name))
  148.  
  149.     
  150.     def characters(self, content):
  151.         self._write(escape(content))
  152.  
  153.     
  154.     def ignorableWhitespace(self, content):
  155.         self._write(content)
  156.  
  157.     
  158.     def processingInstruction(self, target, data):
  159.         self._write('<?%s %s?>' % (target, data))
  160.  
  161.  
  162.  
  163. class XMLFilterBase(xmlreader.XMLReader):
  164.     
  165.     def __init__(self, parent = None):
  166.         xmlreader.XMLReader.__init__(self)
  167.         self._parent = parent
  168.  
  169.     
  170.     def error(self, exception):
  171.         self._err_handler.error(exception)
  172.  
  173.     
  174.     def fatalError(self, exception):
  175.         self._err_handler.fatalError(exception)
  176.  
  177.     
  178.     def warning(self, exception):
  179.         self._err_handler.warning(exception)
  180.  
  181.     
  182.     def setDocumentLocator(self, locator):
  183.         self._cont_handler.setDocumentLocator(locator)
  184.  
  185.     
  186.     def startDocument(self):
  187.         self._cont_handler.startDocument()
  188.  
  189.     
  190.     def endDocument(self):
  191.         self._cont_handler.endDocument()
  192.  
  193.     
  194.     def startPrefixMapping(self, prefix, uri):
  195.         self._cont_handler.startPrefixMapping(prefix, uri)
  196.  
  197.     
  198.     def endPrefixMapping(self, prefix):
  199.         self._cont_handler.endPrefixMapping(prefix)
  200.  
  201.     
  202.     def startElement(self, name, attrs):
  203.         self._cont_handler.startElement(name, attrs)
  204.  
  205.     
  206.     def endElement(self, name):
  207.         self._cont_handler.endElement(name)
  208.  
  209.     
  210.     def startElementNS(self, name, qname, attrs):
  211.         self._cont_handler.startElementNS(name, qname, attrs)
  212.  
  213.     
  214.     def endElementNS(self, name, qname):
  215.         self._cont_handler.endElementNS(name, qname)
  216.  
  217.     
  218.     def characters(self, content):
  219.         self._cont_handler.characters(content)
  220.  
  221.     
  222.     def ignorableWhitespace(self, chars):
  223.         self._cont_handler.ignorableWhitespace(chars)
  224.  
  225.     
  226.     def processingInstruction(self, target, data):
  227.         self._cont_handler.processingInstruction(target, data)
  228.  
  229.     
  230.     def skippedEntity(self, name):
  231.         self._cont_handler.skippedEntity(name)
  232.  
  233.     
  234.     def notationDecl(self, name, publicId, systemId):
  235.         self._dtd_handler.notationDecl(name, publicId, systemId)
  236.  
  237.     
  238.     def unparsedEntityDecl(self, name, publicId, systemId, ndata):
  239.         self._dtd_handler.unparsedEntityDecl(name, publicId, systemId, ndata)
  240.  
  241.     
  242.     def resolveEntity(self, publicId, systemId):
  243.         return self._ent_handler.resolveEntity(publicId, systemId)
  244.  
  245.     
  246.     def parse(self, source):
  247.         self._parent.setContentHandler(self)
  248.         self._parent.setErrorHandler(self)
  249.         self._parent.setEntityResolver(self)
  250.         self._parent.setDTDHandler(self)
  251.         self._parent.parse(source)
  252.  
  253.     
  254.     def setLocale(self, locale):
  255.         self._parent.setLocale(locale)
  256.  
  257.     
  258.     def getFeature(self, name):
  259.         return self._parent.getFeature(name)
  260.  
  261.     
  262.     def setFeature(self, name, state):
  263.         self._parent.setFeature(name, state)
  264.  
  265.     
  266.     def getProperty(self, name):
  267.         return self._parent.getProperty(name)
  268.  
  269.     
  270.     def setProperty(self, name, value):
  271.         self._parent.setProperty(name, value)
  272.  
  273.     
  274.     def getParent(self):
  275.         return self._parent
  276.  
  277.     
  278.     def setParent(self, parent):
  279.         self._parent = parent
  280.  
  281.  
  282.  
  283. def prepare_input_source(source, base = ''):
  284.     if type(source) in _StringTypes:
  285.         source = xmlreader.InputSource(source)
  286.     elif hasattr(source, 'read'):
  287.         f = source
  288.         source = xmlreader.InputSource()
  289.         source.setByteStream(f)
  290.         if hasattr(f, 'name'):
  291.             source.setSystemId(f.name)
  292.         
  293.     
  294.     if source.getByteStream() is None:
  295.         sysid = source.getSystemId()
  296.         basehead = os.path.dirname(os.path.normpath(base))
  297.         sysidfilename = os.path.join(basehead, sysid)
  298.         if os.path.isfile(sysidfilename):
  299.             source.setSystemId(sysidfilename)
  300.             f = open(sysidfilename, 'rb')
  301.         else:
  302.             source.setSystemId(urlparse.urljoin(base, sysid))
  303.             f = urllib.urlopen(source.getSystemId())
  304.         source.setByteStream(f)
  305.     
  306.     return source
  307.  
  308.